package chamado;

import equipamento.Equipamento;
import equipamento.excecao.EquipamentoNaoEncontradaException;
import equipamento.excecao.LimiteEquipamentosAtingidoException;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import naturezaChamado.NaturezaChamado;
import nivelUrgencia.NivelUrgencia;
import pessoa.cliente.Cliente;
import pessoa.usuario.Usuario;

public class Chamado {

	private NaturezaChamado natureza;
	private Cliente cliente;
	private String descricao;
	private NivelUrgencia nivelUrgencia;
	private GregorianCalendar dataHoraAbertura;
	private Usuario responsavel;
	private int numeroOS;
	private String statusChamado;
        
        public Chamado() {
            dataHoraAbertura = new GregorianCalendar();
            statusChamado = IStatusChamado.ABERTO;
        }
        
        public String getStatusChamado() {
            return statusChamado;
        }
        
	public NaturezaChamado getNatureza() {
            return natureza;
	}
	 
	public Cliente getCliente() {
            return cliente;
	}
	 
	public String getDescricao() {
            return descricao;
	}
	 
	public NivelUrgencia getNivelUrgencia() {
            return nivelUrgencia;
	}
	
        public GregorianCalendar getDataHoraAbertura() {
            return dataHoraAbertura;
        }
        
	public String getDataAbertura() {            
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            return sdf.format(dataHoraAbertura);
	}
	 
	public String getHoraAbertura() {
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");            
            return sdf.format(dataHoraAbertura);            
	}                
	 
	public Usuario getResponsavel() {
            return responsavel;
	}
	 
	public int getNumeroOS() {
            return numeroOS;
	}
	
        public void setStatusChamado(String statusChamado) {            
            this.statusChamado = statusChamado;
        }
        
	public void setNatureza(NaturezaChamado natureza) {
            this.natureza = natureza;
        }
	 
	public void setCliente(Cliente cliente) {
            this.cliente = cliente;
	}
	 
	public void setDescricao(String descricao) {
            this.descricao = descricao;
	}
	 
	public void setNivelUrgencia(NivelUrgencia nivelUrgencia) {
            this.nivelUrgencia = nivelUrgencia;
	}
        
        public void setResponsavel(Usuario responsavel)  {
            this.responsavel = responsavel;
        }
        
        public void setNumeroOS(int numeroOS) {
            this.numeroOS = numeroOS;
        }
        
//        public int getPosicaoLivre() {
//            for (int i = 0; i < equipamentos.length; i++) {
//                if (equipamentos[i] == null) {
//                    return i;
//                }
//            }
//            return -1;
//        }
        
//        public boolean idCadastrado(int id) {
//            for (int i = 0; i < equipamentos.length; i++) {
//                if (((Equipamento) equipamentos[i]).getId() == id) {
//                    return true;
//                }
//            }
//            
//            return false;
//        }
        
//        public void adicionar(Equipamento equipamento) throws LimiteEquipamentosAtingidoException {
//            
//            int posicaoArray = getPosicaoLivre();
//            
//            if (posicaoArray == -1) {
//                throw new LimiteEquipamentosAtingidoException();
//            }                                    
//            
//            equipamento.setId(posicaoArray + 1);
//            
//            equipamentos[posicaoArray] = equipamento; 
//        }
        
//        public int getIndice(int id) throws EquipamentoNaoEncontradaException {
//            for (int i = 0; i < equipamentos.length; i++) {
//                if (equipamentos[i].getId() == id) {
//                    return i;                    
//                }
//            }
//            
//            throw new EquipamentoNaoEncontradaException();
//        }
        
//        public void excluir(int id) throws EquipamentoNaoEncontradaException {
//            
//            if (idCadastrado(id)) {                                
//                int i = getIndice(id);                
//                
//                while (i < equipamentos.length) {                    
//                    if (equipamentos[i + 1] != null) {
//                        equipamentos[i] = equipamentos[i + 1];
//                        i++;
//                    } else {
//                        break;
//                    }
//                }
//                
//                equipamentos[i] = null;
//            } else {
//                throw new EquipamentoNaoEncontradaException();
//            }
//	}
}